/**
 * layer封装包，内含各种弹出层，提示层，输入确认框等
 * 统一以apexLayer对象的方式调用
 * Api列表
 * Warn 、Success 、Error 、Confirm 、 OpenFrame
 * CloseIndex 、CloseLoading 、 CloseAll 、 Loading、Tips、CloseTips
 * PS:注意width与height需要入参String并带上px单位
 *    外部JS不再调用layer对象去实现弹出层，有未能满足的弹出层，可以在小组群内提出，统一加
 */
layer.config({
	shift: 0, //默认动画风格
    skin:'layer-ext-apex',
    extend:'skin/apex/style.css'
})
layer.use('extend/layer.ext.js');//加入layer拓展方包
var apexLayer = {
	/**
	 * 警告提示
	 * @param {Object} msg  提示内容
	 * @param {Object} func  回调事件 自动关闭提示层
	 * @param {Object} showBtn  是否显示确认按钮
	 * @param {Object} time  显示时间
	 */
	Warn:function(msg,func,showBtn,time){
		if(msg=="" ||typeof msg == "undefined" || msg == null){
			msg = "业务警告！";
		}
		var width = 'auto';
		if(msg.length<13){//长度13刚好不会影响显示效果
			width = '250px';
		}
		var btnAry = new Array();
		if(showBtn=="" ||typeof showBtn == "undefined" || showBtn == null || showBtn){
			btnAry.push('确定');
		}
		if(showBtn == false){
			btnAry = new Array();
		}
		if(time=="" ||typeof time == "undefined" || time == null){
			time = 0;
		}
		
		layer.msg(msg, {
            icon: 0,
            area:[width,'auto'],
            time: time,
            btn: btnAry,
            shade: [0.2, '#393D49'],
            skin:'layui-layer-zq',//按钮皮肤样式
            yes:function(index){
            	layer.close(index);
            	if(typeof func == "function"){
    				func();
    			}
            }
        });
		//变灰色半透明背景
		$("div[type='dialog']").addClass("layui-layer-hui");
	},
	/**
	 * 成功提示
	 * @param {Object} msg  提示内容
	 * @param {Object} func  回调事件 自动关闭提示层
	 * @param {Object} showBtn  是否显示确认按钮
	 * @param {Object} time  显示时间
	 */
	Success:function(msg,func,showBtn,time){
		if(msg=="" ||typeof msg == "undefined" || msg == null){
			msg = "业务请求受理成功！";
		}
		var width = 'auto';
		if(msg.length<13){//长度13刚好不会影响显示效果
			width = '250px';
		}
		var btnAry = new Array();
		if(showBtn=="" ||typeof showBtn == "undefined" || showBtn == null || showBtn){
			btnAry.push('确定');
		}
		if(showBtn == false){
			btnAry = new Array();
		}
		if(time=="" ||typeof time == "undefined" || time == null){
			time = 0;
		}
		layer.msg(msg, {
            icon: 1,
            area:[width,'auto'],
            skin:'layui-layer-zq',//按钮皮肤样式
            time: time,
            btn: btnAry,
            shade: [0.2, '#393D49'],
            yes:function(index){
            	layer.close(index);
            	if(typeof func == "function"){
    				func();
    			}
            }
        });
		//变灰色半透明背景
		$("div[type='dialog']").addClass("layui-layer-hui");
	},
	Msg:function(msg,time,func){
		time=time?time:800;
		layer.msg(msg,
				{
					shade: [0.2, '#393D49'],
					time:time
				},
				function(){
					if(typeof func == "function"){
	    				func();
	    			}
				});
		$("div[type='dialog']").addClass("layui-layer-hui");
	},
	/**
	 * 失败、错误提示
	 * @param {Object} msg   提示内容
	 * @param {Object} func  回调事件 自动关闭提示层
	 * @param {Object} showBtn  是否显示确认按钮
	 * @param {Object} time  显示时间
	 */
	Error:function(msg,func,showBtn,time){
		if(msg=="" ||typeof msg == "undefined" || msg == null){
			msg = "业务请求受理失败！";
		}
		var width = 'auto';
		if(msg.length<13){//长度13刚好不会影响显示效果
			width = '250px';
		}
		var btnAry = new Array();
		if(showBtn=="" ||typeof showBtn == "undefined" || showBtn == null || showBtn){
			btnAry.push('确定');
		}
		if(showBtn == false){
			btnAry = new Array();
		}
		if(time=="" ||typeof time == "undefined" || time == null){
			time = 0;
		}
		layer.msg(msg, {
            icon: 2,
            skin:'layui-layer-zq',
            area:[width,'auto'],
            time: time,
            btn: btnAry,
            shade: [0.2, '#393D49'],
            yes:function(index){
            	layer.close(index);
            	if(typeof func == "function"){
    				func();
    			}
            }
        });
		//变灰色半透明背景
		$("div[type='dialog']").addClass("layui-layer-hui");
	},
	/**
	 * 弹出确认提示框，拥有确定与取消2个按钮事件
	 * @param {Object} msg  提示内容
	 * @param {Object} title         提示标题
	 * @param {Object} btnYesName    确定按钮的名称          不传默认"确定"
	 * @param {Object} btnNoName     取消按钮的名称          不传默认"取消"
	 * @param {Object} func_yes      确定按钮的处理事件      不传默认不执行任何事件
	 * @param {Object} func_no       取消按钮的处理事件      不传默认不执行任何事件
	 */
	Confirm:function(msg,title,btnYesName,btnNoName,func_yes,func_no){
		if(title==null||title==""||typeof title == "undefined"){
			title = "温馨提示";
		}
		if(btnYesName==null||btnYesName==""||typeof btnYesName == "undefined"){
			btnYesName = "确定";
		}
		if(btnNoName==null||btnNoName==""||typeof btnNoName == "undefined"){
			btnNoName = "取消";
		}
		var width = 'auto';
		if(msg.length<13){//长度13刚好不会影响显示效果
			width = '250px';
		}
		var index = layer.msg(msg, {
            icon: 3,
            area:[width,'auto'],
            time: 0 //不自动关闭
            ,btn: [btnYesName,btnNoName],
            skin:'layui-layer-zq',
            shade: [0.2, '#393D49'],
            yes:function(){
            	if(typeof func_yes == "function"){
            		func_yes();
    			}
            },
            cancel:function(){
            	if(typeof func_no == "function"){
            		func_no();
    			}
            }
            
        });
		$("div[type='dialog']").addClass("layui-layer-hui");
		return index;
	},
	/**
	 * 关闭当前的层
	 * @param {Object} index
	 */
	CloseIndex:function(index){
		if(index!=null&&index!=""&&typeof index !="undefined"){
			layer.close(index);
		}
	},
	/**
	 * 关闭所有的layer层
	 */
	CloseAll:function(){
		if(typeof layer.closeAll == "function")
			layer.closeAll();
	},
	/**
	 * layer遮罩层方法
	 * @param {Object} loadingMsg      遮罩层提示文本信息     默认"正在加载中..."
	 * @param {Object} timeout         自动隐藏时间（单位毫秒1秒=1000毫秒） 默认不自动关闭()
	 */
	Loading:function(timeout,loadingMsg){
		if(loadingMsg==null||loadingMsg==""||typeof loadingMsg== "undefined"){
			loadingMsg = "正在加载中...";
		}
		if(timeout==null||timeout==""||typeof timeout=="undefined"){
			timeout = 0;
		}
		layer.load(1);//layer.load(),layer.load(2)
		if(timeout>0){
			//此处关闭加载层
			setTimeout(function(){
			    layer.closeAll('loading');
			}, timeout);
		}
	},
	/**
	 * layer弹出Iframe层方法
	 * @param  params
	 * params参数格式：{ title:'标题',type:1或者2  1是本地html标签  2是url
	 * 				  width:'宽度',height:'高度',
	 * 				  content:'url地址或者html标签内容',maxmin:'最大化最小化'
	 * 				  scrollbar :'滚动条',
	 * 				  closeBtn:'关闭按钮'(0是关闭，1、2两种样式)
	 * 				  callback:function(){关闭时候的回调函数}}
	 */
	OpenFrame:function(params){
		var height = params.height || ($(window).height()-50);
		var width = params.width || ($(window).width()-100);
		if(typeof params.closeBtn == "undefined"){
			params.closeBtn = 1;
		}
		if(typeof params.type == "undefined"){
			params.type = 1;
		}
		if(typeof params.maxmin == "undefined"){
			params.maxmin = true;
		}
		if(typeof params.scrollbar == "undefined"){
			params.scrollbar = false;
		}
		layer.open({
			title:params.title,
		    type: params.type,
		    area: [width+'px', height+'px'],
		    fix: false, //不固定
		    shade: [0.2, '#393D49'],
		    maxmin: params.maxmin,
		    content: params.content,
		    closeBtn:params.closeBtn,
		    scrollbar:params.scrollbar,
		    skin:'layui-layer-zq',
		    cancel: function(){
		    	if (typeof params.close == "function") {
		    		params.close();
		    	}
		    }
		});
	},
	/**
	 * 显示漂浮提示层
	 * @param {} params
	 * message：提示消息内容（支持写成html格式，例如：<p class="a">XXXXXX</p><p class="b">XXXXXXXX</p>.多段式提示）
	 * object : 吸附目标选择器  例如：'#id' 或者 dom元素对象 this等
	 * guide  : 指引方向（1：上，2：右，3：下，4：左）。 
	 * more   : 是否允许多个tips  默认false
	 * time   : 显示时间
	 */
	Tips:function(params){
		if(typeof params.more == "undefined"){
			params.more = false;
		}
		if(typeof params.guide == "undefined"){
			params.guide = 2;
		}
		if(typeof params.time == "undefined"){
			params.time = 1000;
		}
		if (typeof params.color == "undefined"){
			params.color = '#000000';
		}
		return layer.tips(params.message, params.object, {
		    tips: [params.guide, params.color],
		    tipsMore:params.more,
		    time:params.time
		});
	},
	/**
	 * 关闭加载层
	 */
	CloseLoading:function(){
		layer.closeAll('loading');
	},
	/**
	 * 关闭Tips提示层
	 */
	CloseTips:function(){
		if(typeof layer.closeTips == "function")
			layer.closeTips();
	},
	CloseIndex:function(index){
		layer.close(index);
	}
};